<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>await的原理</title>
</head>
<body>
<!--
    若我们使用 async 配合 await 这种写法：
        1. 表面上不出现任何的回调函数
        2. 但实际上底层把我们写的代码进行了加工，把回调函数“还原”回来了。
        3. 最终运行的代码依然有回调，只是程序员没有看见
 -->
<script type="text/javascript">
    const p = new Promise((resolve, reject) => {
        setTimeout(() => {
            resolve('ok')
        }, 4000)
    })

    async function demo() {
        // 程序员“轻松”的写法
        const res = await p
        console.log(res)
        console.log(666)

        // 浏览器翻译后的代码
        /*
        p.then(
            res => {
                console.log(res)
                console.log(666)
            }
        )

         */
    }
    demo()
    console.log(123)
</script>
</body>
</html>
